#ifndef MESSAGE_H_
#define MESSAGE_H_
#include "Person.h"

// Valores posibles del flag
#define FLAG_NO_RESULT -1 // No hubo resultados en la consulta.
#define FLAG_NO_LAST_RESULT 0 // El mensaje que se envia no es el último de la cadena (se deben leer más)
#define FLAG_LAST_RESULT 1 // El mensaje que se envía es el último de la cadena.

// Códigos del protocolo de mensaje
#define INSERT_REQUEST 0 // Solicito insertar una fila (enviado por el cliente)
#define INSERT_OK_RESPONSE 1 // La insercion fue exitosa (enviado por el servidor)
#define INSERT_ERROR_RESPONSE 2 // Hubo un error en la inserción (enviado por el servidor)
#define SELECT_ALL_REQUEST 3 // Solicito todas las filas de la tabla (enviado por el cliente)
#define SELECT_BY_NAME_REQUEST  4 // Solicito las que coincidan con el nombre (enviado por el cliente)
#define SELECT_BY_ADDRESS_REQUEST  5 // Solicito las filas que coincidan con la direccion (enviado por el cliente)
#define SELECT_BY_TELEPHONE_REQUEST  6 // Solicito filas que coincidan con el tel (enviado por el cliente)
#define SELECT_BY_ALL_REQUEST 7 // Solicito las filas que coincidan todos los campos (enviado por el cliente)
#define SELECT_RESPONSE 8 // Se envia una fila (enviado por el servidor)

typedef struct Message {
	long mtype; // El cliente pone su pid, el servidor pone el pid del cliente al que va dirigido el msg
	int messageCode; // Código del mensaje del protocolo.
	Person row; // Voy a poner el valor de la fila a dar de alta o la fila resultado de la consulta
	int flag; // -1 si no hubo resultados en una consulta, 0 si no es el ultimo resultado de una consulta
			  // 1 si es el ultimo resultado de una consulta
			  // Flag lo escribe el servidor y lo lee el cliente
} Message;


#endif /* MESSAGE_H_ */
